Memory Reliability Availability and Serviceability (Memory RAS) features can include features such as memory mirroring, memory sparing, memory RAID (Redundant Array of Independent Disks), etc. Memory RAS features are increasingly becoming more important in various computer related market segments such as server market segments, including low end server market segments. Memory RAS features help server application availability by providing mechanisms to recover and/or reconstruct memory data without bringing the system down in cases where erroneous data is supplied by the memory devices. Such memory RAS features need to be enabled in server platforms without severely impacting the performance of the system.
In memory RAS flows such as memory sparing, memory mirroring, memory hot plug, etc. there is a need to copy memory data from one memory device such as a Dual In-Line Memory Module (DIMM) to another spare memory device such as a DIMM without interfering with regular memory accesses. Such RAS memory operations (flows) occur at the same time as regular memory accesses. Using software copy schemes can reduce the cost of implementing the memory RAS flows, but the copy process itself must be atomic in order to guarantee data integrity. As is known in the art, the atomicity of a process means that the process must complete without any interruptions. This means that during an atomic copy process the read from one device and the write to the spare device must happen without any interruptions.
One way to ensure the atomicity of a software copy process is to use software locking/fencing operations. However, there are problems with using such operations. For example, locking/fencing operations are not applicable to all memory regions such as the Write Combine (WC) memory region. When copying data from such a region a memory access to the same address can occur between the read/write operations and potentially corrupt the data. Therefore, it would be beneficial to synchronize the copy process with other memory accesses, particularly in a system with a point-to-point (unordered) interconnect.